bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    if (p == NULL && q != NULL)
        return false;
    if (p != NULL && q == NULL)
        return false;
    if (p == NULL && q == NULL)
        return true;

    if (p->val == q->val)
        return  isSameTree(p->left, q->left)
        && isSameTree(p->right, q->right);
    else
        return false;
}